Traductores e Intérpretes UCAB : Expresiones Regulares en la Vida Real
This page last changed on Oct 24, 2006 by juanca.
Las Expresiones Regulares se usan en diversas áreas distintas a la de los compiladores. Por ejemplo, los editores de texto y los Ambientes Integrados de Desarrollo de software suelen incluir facilidades con Expresiones Regulares para la búsqueda y sustitución de texto. Existen también librerías de manejo de Expresiones Regulares para la mayoría de los lenguajes de programación, y hay lenguajes como Perl y AWK, cuyo diseño gira en torno a las Expresiones Regulares. ExtensionesLas implementaciones de Expresiones Regulares normalmente proveen cambios en la notación y extensiones que hacen más fácil escribir una Expresion Regular. A continuación se describen algunas de las modificaciones y extensiones más frecuentes. El alfabeto subyacente en todos los casos es:
. El punto (any)El símbolo . concuerda con cualquier símbolo del alfabeto subyacente. Por ejemplo, la expresión regular:
concuerda con las cadenas (produce el Conjunto Regular):
Para lograr la Concordancia con un punto, hay que preceder el punto de una barra invertida (backslash).
concuerda únicamente con la cadena:
El símbolo de barra invertida se usa en las Expresiones Regulares como símbolo de escape, es decir para cambiar el significado del siguiente símbolo de especial a normal, o viceversa. La siguiente Expresion Regular:
concuerda con muchas más cadenas que "3.1416". Para hacer que la expresión solo concuerde con esa aproximación del número PI, hay que escribirla así:
Formalmente, el símbolo "." corresponde a la Expresion Regular:
* y + para Clausura y Clausura positiva
Para lograr la concordancia con * o + es necesario usar el símbolo de escape. ? Para cero o una vezEl símbolo ? hace que la Expresion Regular anterior concuerde cero veces o una vez. Por ejemplo, la Expresion Regular:
concuerda con:
Al igual que con el punto, para lograr Concordancia con un signo de interrogación, hay que usar el símbolo de escape y escribir: \? Formalmente:
{n,m} Para de n a m vecesUna expresión de la forma
concuerda p con las cadenas que contengan entre n y m concatenaciones de p. Por ejemplo, la Expresion Regular:
concuerda con:
Formalmente:
[ ] Para conjuntos de caracteresLas expresiones en corchetes [ ] contienen listas de símbolos separadas por comas, y concuerdan con cualquiera de esos s?mbolos. Por ejemplo, la e.r.:
concuerda con:
únicamente. También pueden usarse rangos de símbolos separándolos con un quión:
una Expresion Regular así concuerda con cualquiera de los símbolos entre la 'a' y la 'z' según el orden lexicográfico del alfabeto subyacente. Como la mayoría de los órdenes lexicográficos tienen a las letras mayúsculas, las minúsculas, y los dígitos en el orden esperado, las expresiones con corchetes resultan muy útiles. Por ejemplo, los identificadores válidos en el lenguaje de programación Pascal, concuerdan con esta Expresion Regular:
Para incluir un guión entre los símbolos a concordar en una expresión en corchetes, se lo puede incluir de primero o último:
concuerda con:
[^ ] Inversos de ConjuntosSi el primer símbolo despu?s del corchete de apertura es uno de acento circunflejo (caret), entonces la expresión concuerda con lo contrario a lo que concordaría sin dicho símbolo:
concuerda con cualquier símbolo que no sea una letra minúscula. ^ y $, comienzo y fin de la secuenciaEl símbolo ^ concuerda con el inicio de la secuencia (o con el inicio de la línea de texto de entrada, dependiendo del software y su configuración), y el símbolo $ concuerda con el final de una secuancia (o con el final de la línea).
concuerda con las secuencias vacías (el conjunto {ε}). La expresión:
concuerda con las líneas que comienzan por uno o más blancos. Secuencias de EscapeMuchos lenguajes de expresiones regulares, como el incluido en el lenguaje de programación Perl, definen una serie de muy útiles secuencias de escape:
() para agrupar y másEn muchas librerías de Expresiones Regulares, los paréntesis tienen un significado adicional al de las Expresiones Regulares formales. Los paréntesis hacen que el intérprete de Expresiones Regulares recuerde la secuencia que concordó con la sub-expresión y permita usarla en otras sub-expresiones, o en sustituciones. Uno de los usos más frecuentes de los paréntesis es tratar de concordar la misma secuencia dos veces. Usualmente, se representa con \n a la cadena concordada por la sub-expresión entre paréntesis n. Por ejemplo, la expresión:
trata de encontrar las asignaciones de pascal en las que el identificador asignado aparezca en en el lado derecho. Otro uso frecuente de las sub-expresiones delimitadas por paréntesis es en la búsqueda y substitución. En esos casos, suele representarse por $n la cadena concordada por la sub-expresión entre paréntesis n. Por ejemplo, podríamos usar la siguiente Expresion Regular para intercambiar el orden de los elementos en una tabla: reemplazar(entrada, '(\\w*)\\s*,\\s*(\\w+);', '$2, $1;'); |
Document generated by Confluence on Oct 04, 2010 11:25 |